package com.scala.spark

import org.apache.spark.sql.SparkSession

object DepartmentAvg {
    def main(args: Array[String]): Unit = {
        val spark=SparkSession.builder().appName("depart").master("local").getOrCreate()
        import spark.implicits._
        //导入sparksql 的functions
        import org.apache.spark.sql.functions._
        val employee=spark.read.json("employee")
        val department=spark.read.json("department")

        employee.filter("age>20")
            .join(department,$"depId"===$"id")
            .groupBy(department("name"),employee("gender"))
            .agg(avg(employee("salary")), avg(employee("age")))
            .show()

        // dataframe == dataset[Row]
        // dataframe的类型是Row，所以是untyped类型，弱类型
        // dataset的类型通常是我们自定义的case class，所以是typed类型，强类型

        // dataset开发，与rdd开发有很多的共同点
        // 比如说，dataset api也分成transformation和action，transformation是lazy特性的
        // action会触发实际的计算和操作

        // dataset也是有持久化的概念的    show()就是
    }
}
